function dtStim=disp_frame(w,stim_filename,t,noise) 

% arguments d'entrée : fenêtre w, nom du fichier stimulus stim_filename, temps d'affichage du stimulus t,
% proportion de bruit dans l'affichage du stimulus noise.


%ifi = 1/Screen('FrameRate',0);
ifi=1/60;
tTotal=.7;


[imdata,immap]=imread(char(stim_filename)); %load image file

%composition d'un masque par permutation aléatoire des phases des séries de Fourier de l'image
%w=fenêtre du stimulus; stim_filename=nom du fichier à masquer.

imdata = double(imdata);
if ndims(imdata) == 3
imdata = rgb2luminance(imdata);
imdata = min(imdata,255);
imdata = max(imdata,0);
end

X=double(imdata)/255; %l'image à transformer
W=fft2(X); %transfo de Fourier
a=angle(W); 
a(randperm(numel(a)))=a; %permutation des phases
W=abs(W).*(exp(-i*a)); %nouvelle série de Fourier
W=ifft2(W); %nouvelle image
W=abs(W)*255;

%noise=.35;
W=(noise*double(imdata)+(1-noise)*W);
W(W>255)=255;

tex{1}=Screen('MakeTexture', w, W); %make texture of image w/reference to main window, w


a(randperm(numel(a)))=a; %permutation des phases
W=abs(W).*(exp(-i*a)); %nouvelle série de Fourier
W=ifft2(W); %nouvelle image
W=abs(W)*255;
W(W>255)=255;

tex{2}=Screen('MakeTexture', w, W); %mise en tampon de la nouvelle image

X=double(imdata)/255; %l'image à transformer
W=fft2(X); %transfo de Fourier
a=angle(W); 
a(randperm(numel(a)))=a; %permutation des phases
W=abs(W).*(exp(-i*a)); %nouvelle série de Fourier
W=ifft2(W); %nouvelle image
W=abs(W)*255;
W(W>255)=255;

tex{3}=Screen('MakeTexture', w, W); %mise en tampon de la nouvelle image

%Screen('DrawTexture', w, tex{2});
tMask1=Screen('Flip',w);
%tMask2=Screen('Flip',w);
%Screen('DrawTexture', w, tex{3});
%tMask2=Screen('Flip',w);
%tMask2=Screen('Flip',w);

Screen('DrawTexture', w, tex{1});
tStim=Screen('Flip',w,tMask1+.25-ifi/2) ;%affiche l'image t seconde

Screen('DrawTexture', w, tex{3});
tMask2=Screen('Flip',w, tStim+t-ifi/2);
%tMask=Screen('Flip',w);
%Screen('DrawTexture', w, tex{2});
%tMask=Screen('Flip',w);
%tMask=Screen('Flip',w);
%Screen('DrawTexture', w, tex{3});
%tMask=Screen('Flip',w);

Screen('Flip',w,tMask2+(tTotal-(tMask2-tMask1))-ifi/2);

dtStim=tMask2-tStim;
